package com.epower.bo.epoweruserword;

import java.util.List;

import com.epower.bo.epoweruserword.impl.EpowerUserWordServiceImpl.WordCountResult;
import com.epower.dataobject.EpowerBookDO;
import com.epower.dataobject.EpowerUserWordDO;
import com.epower.dataobject.EpowerWordDO;

/***
 * BO层
 * 
 * @author QuickDev
 * 
 */
public interface EpowerUserWordService {

	// 查询操作
	public EpowerUserWordDO getEpowerUserWordByOption(EpowerUserWordDO epowerUserWord);

	public List<EpowerUserWordDO> getEpowerUserWordListByOption(EpowerUserWordDO epowerUserWord);

	public EpowerUserWordDO getEpowerUserWordById(Integer epowerUserWord);

	// 删除操作
	public boolean deleteEpowerUserWordById(Integer id);

	public Integer getEpowerUserWordCountByOption(EpowerUserWordDO epowerUserWord);

	// 更新操作
	public boolean updateEpowerUserWordByOption(EpowerUserWordDO epowerUserWord);

	// 添加操作
	public Integer addEpowerUserWord(EpowerUserWordDO epowerUserWord);

	public List<EpowerUserWordDO> getEpowerUserWordListPageByOption(EpowerUserWordDO epowerUserWord);

	/**
	 * 
	 * 根据用户相关信息获取单词列表
	 * 
	 * @param epowerUserWord
	 * @return
	 */
	public List<EpowerWordDO> getEpowerWordsByOption(EpowerUserWordDO epowerUserWord);

	/**
	 * 根据单词ID获取单词的图片URL
	 * 
	 * @param wordId
	 * @return
	 */
	public String getWordImgUrl(Integer wordId);

	/**
	 * 
	 * 从用户学习表中获取用户一共学习了多少个父级别课本
	 * 
	 * @param userId
	 * @return
	 */
	public List<EpowerBookDO> getBookListByUserId(EpowerUserWordDO query);

	/**
	 * 获取用户陌生或者模糊的单词列表
	 * 
	 * @param query
	 * @return
	 */
	public List<EpowerWordDO> getUserWordsByUserId(EpowerUserWordDO query);

	/**
	 * 获取用户收藏的词
	 * 
	 * @param query
	 * @return
	 */
	public List<EpowerWordDO> getUserCollections(EpowerUserWordDO query);

	/**
	 * 根据用户ID和wordid取消收藏
	 * 
	 * @param userId
	 * @param wordId
	 */
	public boolean releaseCollections(Integer userId, Integer wordId);

	// 获取某个人在某个课本中的熟悉词数和生词数
	public WordCountResult getFamiliarWordCountAndStrangeWordCount(int bookid, int userid);

	public boolean updateEpowerUserWordLevel(int bookid, int wordid, int userid, int level);

	public int queryEpowerUserWordCount(int wordid, int userid, int bookid);

}
